package com.wlyuan.open.scanner.domain.order;

import com.wlyuan.open.scanner.utils.enums.named.TrackTypeEnum;
import com.wlyuan.open.scanner.utils.enums.order.OrderSignTypeEnum;
import com.wlyuan.open.scanner.utils.enums.order.OrderStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Set;

/**
 * @author lijing
 * @description
 */
@Data
public class OrderInfo {

    @ApiModelProperty("单据编号")
    private String orderNo;
    @ApiModelProperty("合同编号")
    private String contractNo;
    @ApiModelProperty("客户ID")
    private Long customerId;
    @ApiModelProperty("客户名称")
    private String customerName;
    @ApiModelProperty("客户类型")
    private Integer customerType;
    @ApiModelProperty("客户租户")
    private Long customerTenantId;
    @ApiModelProperty("收货方类型")
    private Long consigneeId;
    @ApiModelProperty("收货方名称")
    private String consigneeName;
    @ApiModelProperty(value = "订单备注")
    private String desc;
    @ApiModelProperty(value = "绑定设备类型 1、电子回单 | 2、快递单号")
    private TrackTypeEnum trackType;
    @ApiModelProperty(value = "电子回单号/快递单号")
    private String deviceCode;

    @ApiModelProperty(value = "重量补差")
    private BigDecimal weightAddition;
    @ApiModelProperty(value = "体积补差")
    private BigDecimal volumeAddition;
    @ApiModelProperty(value = "价值补差")
    private BigDecimal valueAddition;
    @ApiModelProperty(value = "总价值")
    private BigDecimal totalValue;

    @ApiModelProperty(value = "订单时效天数")
    private Integer days;

    @ApiModelProperty("回单签收时间")
    private LocalDateTime receiptSignTime;
    @ApiModelProperty("制单人描述")
    private String createManDesc;
    @ApiModelProperty("回单操作人")
    private Long receiptBy;

    @ApiModelProperty("关单时间")
    private LocalDateTime closeAt;
    @ApiModelProperty("关单操作人")
    private Long closeBy;

    @ApiModelProperty("订单状态")
    private OrderStatusEnum status;

    @ApiModelProperty("实签总数")
    private Integer signQuantity;
    @ApiModelProperty("异签总数")
    private Integer signExceptionQuantity;
    @ApiModelProperty("回单总数")
    private Integer receiptQuantity;
    @ApiModelProperty("回单异常总数")
    private Integer receiptExceptionQuantity;
    @ApiModelProperty("签收类型")
    private OrderSignTypeEnum signType;
    @ApiModelProperty("签收说明")
    private String signDesc;
    @ApiModelProperty("回单说明")
    private String receiptDesc;
    @ApiModelProperty("关单说明")
    private String closeDesc;
    @ApiModelProperty("异常状态")
    private Set<Integer> exceptionStatus;
    @ApiModelProperty("签收扩展信息")
    private String signInfo;

    @ApiModelProperty("来源订单")
    private Long srcOrderId;
    @ApiModelProperty("原始单据编号（起始订单）")
    private Long rootOrderId;
    @ApiModelProperty("订单类型，1 客户订单 2 运输订单 3 拼车单")
    private Integer type;
    @ApiModelProperty("公里数")
    private Long kms;
    @ApiModelProperty("承运方编号")
    private Long supplierId;
    @ApiModelProperty("承运方公司编号")
    private Long supplierCompanyId;
    @ApiModelProperty("制单人（下单人）")
    private Long create;
    @ApiModelProperty("下单人所属公司")
    private Long creatorCompanyId;
    @ApiModelProperty("制单时间（下单时间）")
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    private LocalDateTime updateTime;
    @ApiModelProperty("审核(或接受)人")
    private Long confirm;
    @ApiModelProperty("审核(或接收)时间")
    private LocalDateTime confirmTime;
    @ApiModelProperty("签收人")
    private Long singer;
    @ApiModelProperty("签收时间")
    private LocalDateTime signTime;
    @ApiModelProperty("签收单据图片路径")
    private String receiptDoc;
    @ApiModelProperty("异常描述")
    private String descException;
    @ApiModelProperty("是否有效")
    private Integer invalid;
    @ApiModelProperty("备注")
    private String comments;
    @ApiModelProperty("是否拼车")
    private Integer combined;
    @ApiModelProperty("线下客户")
    private Long customerSymbolId;
    @ApiModelProperty("线下承运商")
    private Long supplierSymbolId;
    @ApiModelProperty("拆单ID")
    private Long prevorderId;
    @ApiModelProperty("预付")
    private BigDecimal payment;
    @ApiModelProperty("到付")
    private BigDecimal payable;
    @ApiModelProperty("实际出发时间")
    private LocalDateTime realFromTime;
    @ApiModelProperty("实际到达时间")
    private LocalDateTime realToTime;
    @ApiModelProperty("快递编码")
    private String expressCode;
    @ApiModelProperty("撤回")
    private Integer rollback;
    @ApiModelProperty("回单时间")
    private LocalDateTime receiptTime;
    @ApiModelProperty("对接操作人")
    private String fromOperator;
    @ApiModelProperty("对接ID")
    private Long terminalOrderId;
    @ApiModelProperty("对接编号")
    private String terminalOrderCode;
    @ApiModelProperty("承运商名字")
    private String supplierName;
    @ApiModelProperty("所属公司")
    private String creatorCompanyName;
    @ApiModelProperty("线下客户名字")
    private String customerSymbolName;
    @ApiModelProperty("线下承运商")
    private String supplierSymbolName;
    @ApiModelProperty("运费总金额")
    private BigDecimal totalCost;
    @ApiModelProperty("总数量")
    private BigDecimal totalAmount;
    @ApiModelProperty("总重量")
    private BigDecimal totalWeight;
    @ApiModelProperty("总体积")
    private BigDecimal totalVolume;
    @ApiModelProperty("拼车物品数量")
    private BigDecimal combinedAmount;
    @ApiModelProperty("拼车总费用")
    private BigDecimal combinedCost;
    @ApiModelProperty("拼车体积")
    private BigDecimal combinedWeight;
    @ApiModelProperty("拼车重量")
    private BigDecimal combinedVolume;
    @ApiModelProperty("拼车订单数")
    private Long combinedOrderAmount;
    @ApiModelProperty("拼车出发地")
    private String combinedFrom;
    @ApiModelProperty("拼车目的地")
    private String combinedTo;
    @ApiModelProperty("出发短信时间")
    private LocalDateTime startMsgTime;
    @ApiModelProperty("预计达到时间")
    private LocalDateTime arriveMsgTime;
    @ApiModelProperty("设备绑定时间")
    private LocalDateTime deviceCreatTime;
    @ApiModelProperty("GPS开始时间")
    private LocalDateTime gpsStartTime;
    @ApiModelProperty("设备绑定时间")
    private LocalDateTime deviceBindingTime;
    @ApiModelProperty("拼车单计算关账日时间")
    private LocalDateTime containsBillDay;
    @ApiModelProperty("承运商类型 1 线上 2 线下 3 自营 4线上-个体")
    private Integer supplierType;
    @ApiModelProperty("撤销订单")
    private Integer cusRollBack;
    @ApiModelProperty("撤销订单ID")
    private Long rollbackOrderId;
    @ApiModelProperty("异常签收情况分类 0 无异常 1 缺少 2 丢失 4 破损 8 其他（作废）")
    private Integer exceptionType;
    @ApiModelProperty("订单打分满分5分")
    private Integer assessLevel;
    @ApiModelProperty("打分说明")
    private String assessment;
    @ApiModelProperty("关闭订单标记 0 无关闭订单,1 客服发起关闭订单,2 运营发起关闭订单,3 运营关闭订单通知,4 客服关闭订单通知,5、客服发起拼车单关闭订单,6、已关闭订单,7、运营发起拼车单关闭订单,8、本方客服关闭订单通知")
    private Integer closeMark;
    @ApiModelProperty("是否带单 0 否 1是")
    private Integer addOrder;
    @ApiModelProperty("附属主单合同号 ")
    private String addPacth;
    @ApiModelProperty("是否自动调度 0 否 1 是")
    private Integer autoSchedule;
    @ApiModelProperty("拼车是否匹配合约")
    private Integer combinePrice;
    @ApiModelProperty("订单关系 0 普通单 1 主单 2 从单")
    private Integer orderType;
    @ApiModelProperty("是否拆单、拆单类型")
    private Integer beSplit;
    @ApiModelProperty("1 线路拆单 2 数量拆单")
    private Integer splitType;
    @ApiModelProperty("关单发起人")
    private String closeInitiator;
    @ApiModelProperty("关单类型，1、订单错误 2、调度错误")
    private Long closeType;
    @ApiModelProperty("签收扩展类型")
    private Integer signInfoType;
    @ApiModelProperty("个体司机已关闭拼车单的子单")
    private String rollBckList;
    @ApiModelProperty("复核签收时间")
    private LocalDateTime verifySignTime;
    @ApiModelProperty("创建订单类型 0 PC平台手动创建 1  移动端创建，2 预发货  3订单导入  4 新api对接  5加加同步订单 6起帆同步订单  9电子回单创建")
    private Integer createType;
    @ApiModelProperty("异常回单类型 0 无 1 补单  2丢单")
    private Integer receiptType;
    @ApiModelProperty("0 无 1 飞机 2 火车 3 轮船")
    private String additionTransportType;
    @ApiModelProperty("0 零担带单 1 整车带单")
    private Integer withChildType;
    @ApiModelProperty("补录设备编号")
    private String deviceCode2;
    @ApiModelProperty("订单总距离 公里")
    private Double distance;
    @ApiModelProperty("第四种已发货 0提货中 1已发货")
    private Integer realfromStatus;
    @ApiModelProperty("分段绑定电子回单途径地暂存")
    private String deviceBindingLog;
    @ApiModelProperty("是否分段绑定 0普通绑定 1分段绑定")
    private Integer deviceBindingPart;

    @ApiModelProperty("延期原因")
    private Integer delayReason;
}
